#include<bits/stdc++.h>
using namespace std;
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType; 
typedef struct LNode{
	ElemType data;
	struct LNode *next;	
}LNode, *LinkList;

Status Init(LinkList &L)
{
	L = new LNode;
	if(!L) return ERROR;
	L->next = NULL;
	return OK;
}
Status Create(LinkList &L, int n)
{
	LNode *t = L;
	for(int i = 0; i < n; i ++)
	{
		LNode *p = new LNode;
		if(!p) return ERROR;
		cin >> p->data;
		t->next = p;
		t = p;
	}
	t->next = NULL;
	return OK;
}
void func(LinkList L, int n)
{
	/**********Begin**************/
	if(n <= 0 || !L->next) return;
	
	vector<bool> hash(n + 1, false);
	
	LNode *pre = L;
	LNode *cur = L->next;
	while(cur)
	{
		int x = abs(cur->data);
		if(!hash[x])
		{
			hash[x] = true;
			pre = cur;
			cur = cur->next;
		}
		else
		{
			pre->next = cur->next;
			delete cur;
			cur = pre->next;
		}
	}
    /**********End**************/
}
void Show(LinkList L)
{
	LNode *p = L->next;
	while(p)
	{
		cout << p->data << ' ';
		p = p->next;
	}
	cout << endl;
}
int main()
{
	LinkList L;
	Init(L);
	
	int n;
	cin >> n;
	
	Create(L, n);
	func(L, n);
	Show(L);
	 
	return 0;
}
/*
【2015年统考真题】

本关任务：用单链表保存m个整数，结点结构[data][next]，且∣data∣≤n，
要求设计一个尽可能高效的算法，对于链表中data域绝对值相同的结点，
仅保留第一次出现的结点而删除其余绝对值相同的结点。
测试输入：
6
-1 2 1 3 4 -3

预期输出：
-1 2 3 4


*/